package cn.bytepulse.web.admin.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 角色表
 *
 * @author jiejiebiezheyang
 * @since 2024-07-03 21:30
 */
@TableName(value = "sys_role")
@Data
public class SysRole implements Serializable {

    @Serial
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    /**
     * 角色id
     */
    @TableId(type = IdType.AUTO)
    @NotNull(groups = {UpdateRole.class})
    private Integer id;
    /**
     * 角色名称
     */
    @NotBlank(groups = {CreateRole.class, UpdateRole.class}, message = "角色名称为空")
    private String roleName;
    /**
     * 角色编码
     */
    @NotBlank(groups = {CreateRole.class, UpdateRole.class}, message = "角色编码为空")
    private String roleCode;
    /**
     * 角色备注
     */
    private String remark;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 创建者
     */
    private Integer createBy;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 更新者
     */
    private Integer updateBy;
    /**
     * 状态 01 启用 00 禁用
     */
    @NotBlank(groups = {CreateRole.class, UpdateRole.class}, message = "状态为空")
    @Pattern(groups = {CreateRole.class}, regexp = "^(00|01)$", message = "状态错误")
    private String status;

    // 新增角色校验
    public interface CreateRole {
    }

    // 更新角色校验
    public interface UpdateRole {
    }
}